package com.dhcc.DRGsHosp.facade.impl;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.inject.Named;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.ContextLoader;

import com.dhcc.DRGsHosp.application.HistoryDataTransferApplication;
import com.dhcc.DRGsHosp.facade.HistoryDataTransferFacade;

/**  
* @ClassName: HistoryDataTransferFacadeImpl  
* @Description: 近三年外的数据迁移  
* @author Administrator  
* @date 2018年7月5日  
* @author shaozhiyuan  
*/
@Named("HistoryDataTransferFacadeImplqiaoyilong20181023")
public class HistoryDataTransferFacadeImpl implements HistoryDataTransferFacade{

	@Autowired
	HistoryDataTransferApplication historyDataTransferApplication;
	/**  
	 * @Description: 近三年外的数据迁移
	 * @author shaozhiyuan 
	 * @date 2018年7月5日  
	 * @version V3.1.0  
	 */  
	@Override
	public void historyDataTransfer() {
				System.out.println("---- 自动任务历史数据 "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+" ----");
		        //定时任务使用java反射时必须重新实例化该接口，bean括号里面填impl实例上面的@Name括号里面的内容
		        if(historyDataTransferApplication==null){
		        	historyDataTransferApplication =(HistoryDataTransferApplication) ContextLoader.getCurrentWebApplicationContext().getBean("historyDataTransferApplicationImplqiaoyilong20181026");
		        }
				//获取数据库中数据当前最大时间
				String maxDateInDRG=historyDataTransferApplication.getmaxDateInDRG();
				//mr_baseinfo这张表不处理，最后和mr_ipinfo一起处理
				String historyTableList[]={"MR_APPENDPAGE_HISTORY","MR_DIAGNOSE_HISTORY",
						"MR_EXPENSE_HISTORY","MR_EXPENSE_SUM_HISTORY","MR_OPERATION_HISTORY",
						"MR_REDISGROUP_HISTORY","T_GROUPINGLOG_HISTORY","T_MEDINS_HISTORY",
						"T_OTHER_GROUPINGRESULT_HISTORY","T_PATIENTDRG_HISTORY"};
				//数据库中数据当前最大时间减三年，查看数据库里是否有该数据
				String maxDateInDRGYear=maxDateInDRG.substring(0,4)==null?"":maxDateInDRG.substring(0,4).toString();
				String maxDateReduceThreeY=(Integer.parseInt(maxDateInDRGYear)-3)+"";
				String maxDateReduceThree = maxDateReduceThreeY+"-12-31";
				int count=historyDataTransferApplication.checkMaxDateReduceThreeCount(maxDateReduceThree);
				//判断是否有近三年前的数据，如果有执行表迁移
				if(count>0){
					for(String table:historyTableList){
						historyDataTransferApplication.dataTransfer(maxDateReduceThree,table,"0");
					}
					historyDataTransferApplication.dataTransfer(maxDateReduceThree,"","1"); //1是指最后处理mr_ipinfo及mr_baseinfo
					System.out.println("更新完毕！后续会根据推送日期每天定时更新！");
				}else{
					System.out.println("暂无数据需要迁移！");
				}
	}
	/**
	 * 	@Discription：近三年外的数据迁移,定时任务调用转接，以QuartzJob结尾
	 *  @Author QiaoYiLong  
	 *  @Date: 2018年10月26日 9:18:07  
	 *  @param 默认格式为 空
	 *  cron 表达式 0 0 3 1 * ? 每月1号凌晨3:00执行历史数据迁移
	 */
	public void historyDataTransferQuartzJob(String param) {
		historyDataTransfer();
	}
}
